package com.haixiaoke.saas.houseMember.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.haixiaoke.saas.common.annotation.Excel;
import com.haixiaoke.saas.common.core.domain.BaseEntity;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;
import java.util.List;


/**
 * 房屋成员对象 biz_house_member
 *
 * @author qixi
 * @date 2024-03-07
 */
@Data
public class HouseMember extends BaseEntity {
    private static final long serialVersionUID = 1L;


    /**
     * 成员类型：1承租人
     */
    public static final String MEMBER_TYPE_TENANTRY = "1";
    /**
     * 成员类型：2房管员
     */
    public static final String MEMBER_TYPE_ROOM_MANAGER = "2";
    /**
     * 成员类型：3同住人
     */
    public static final String MEMBER_TYPE_TENEMENT = "3";


    /**
     * 成员id
     */
    private Long memberId;

    /**
     * 租户id
     */
    @Excel(name = "租户id")
    private String tenantId;

    /**
     * 部门id
     */
    @Excel(name = "部门id")
    private Long deptId;

    /**
     * 房屋id
     */
    @Excel(name = "房屋id")
    private String houseId;

    /**
     * 成员类型：1承租人 2房管员 3同住人
     */
    @Excel(name = "成员类型", readConverterExp = "1=承租人,2=房管员,3=同住人", combo = {"承租人", "房管员", "同住人"})
    private String memberType;

    /**
     * 成员姓名
     */
    @Excel(name = "成员姓名")
    @NotNull(message = "成员姓名不能为空")
    private String memberName;

    /**
     * 成员手机号
     */
    @Excel(name = "成员手机号")
    private String memberPhone;

    /**
     * 成员关系：1配偶 2子女 3父母 5家属 5合伙人 6其他
     */
    @Excel(name = "成员关系", readConverterExp = "1=配偶,2=子女,3=父母,5=家属,5=合伙人,6=其他", combo = {"配偶", "子女", "父母", "家属", "合伙人", "其他"})
    private String memberRelation;

    /**
     * 成员状态：1正常 2已退租
     */
    @Excel(name = "成员状态", readConverterExp = "1=正常,2=已退租", combo = {"正常", "已退租"})
    private String memberState;

    /**
     * 性别：1男 2女
     */
    @Excel(name = "性别", readConverterExp = "1=男,2=女", combo = {"男", "女"})
    private String sex;

    /**
     * 身份证
     */
    @Excel(name = "身份证")
    @NotNull(message = "身份证不能为空")
    private String idCard;

    /**
     * 用户id
     */
    @Excel(name = "用户id")
    private Long userId;

    /**
     * 身份证图片
     */
    @Excel(name = "身份证图片")
    private String idCardImgs;
    private List<String> idCardImgsList;

    /**
     * 人脸图片
     */
    @Excel(name = "人脸图片")
    private String facePhoto;

    /**
     * 关联订单
     */
    @Excel(name = "关联订单")
    private String orderId;

    /**
     * 实名状态：1已实名 2未实名
     */
    @Excel(name = "实名状态", readConverterExp = "1=已实名,2=未实名", combo = {"已实名", "未实名"})
    private String authState;

    /**
     * 账单权限：1开启 2关闭
     */
    @Excel(name = "账单权限", readConverterExp = "1=开启,2=关闭", combo = {"开启", "关闭"})
    private String billLimits;

    /**
     * 操作人id
     */
    @Excel(name = "操作人id")
    private Long operatorId;

    /**
     * 入住时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date checkInTime;

    /**
     * 退房时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date checkOutTime;

    /**
     * 入住状态:1.入住;2.不入住
     */
    @Excel(name = "入住状态", readConverterExp = "1=入住,2=不入住", combo = {"入住", "不入住"})
    private String residenceStatus;

    /**
     * 小区地址
     */
    private String premisesAddress;

    /**
     * 详细地址（省市区）
     */
    private String fullAddress;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 房屋成员对象
     */
    private List<HouseMember> houseMemberList;

    /**
     * 是否是承租人:1是 0否
     */
    private String lesseeStatus;

    /**
     * 是否可入住状态:1是 0否
     */
    private String checkInStatus;

    /**
     * 房间是否关联智能锁状态:1是 0否
     */
    private String houseLockStatus;

    /**
     * 锁状态:1正常 2冻结
     */
    private String lockStatus;

    /**
     * 楼盘id
     */
    private String estateId;


}
